Dec 9, 2018 • neko3
angrme
The title of the challenge, angrme was a big clue as to what is expected: use the angr framework to solve it!
Running the binary with some random input makes it print :(
. A quick look at the binary in IDA shows a lot of comparisons; if any of them fails, it will output :(
, and if they are all successful, it will output :)
. So, we need to tell angr to symbolically execute until it reaches the basic block which outputs :)
.
Solve:
import angr
proj = angr.Project("angrme")
simgr = proj.factory.simgr()
simgr.explore(find=lambda s: b":)" in s.posix.dumps(1))
s = simgr.found[0]
print(s.posix.dumps(0))
Flag:
b'hxp{4nd_n0w_f0r_s0m3_r3al_ch4ll3ng3}'